home *** CD-ROM | disk | FTP | other *** search
- #!/bin/perl
- #############################################################################
- # Simple Search Script #
- # Written By Matt Wright #
- # Created on: 12/16/95 Last Modified on: 12/16/95 #
- # Version 1.0 #
- # I can be reached at: mattw@misha.net #
- # Scripts found at: http://www.worldwidemart.com/scripts/ #
- #############################################################################
- # Define Variables #
-
- $basedir = '/export/home/youruserid/public_html/';
- $baseurl = 'http://yourserver/youruserid/';
- @files = ('*.htm');
- $title = "YOUR TITLE";
- $title_url = 'http://yourserver/youruserid/';
- $search_url = 'http://yourserver/youruserid/search.htm';
-
- # Done #
- #############################################################################
-
- # Parse Form Search Information
- &parse_form;
-
- # Get Files To Search Through
- &get_files;
-
- # Search the files
- &search;
-
- # Print Results of Search
- &return_html;
-
-
- sub parse_form {
-
- # Get the input
- read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
-
- # Split the name-value pairs
- @pairs = split(/&/, $buffer);
-
- foreach $pair (@pairs) {
- ($name, $value) = split(/=/, $pair);
-
- $value =~ tr/+/ /;
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-
- $FORM{$name} = $value;
- }
- }
-
- sub get_files {
-
- chdir($basedir);
- foreach $file (@files) {
- $ls = `ls $file`;
- @ls = split(/\s+/,$ls);
- foreach $temp_file (@ls) {
- if (-d $file) {
- $filename = "$file$temp_file";
- if (-T $filename) {
- push(@FILES,$filename);
- }
- }
- elsif (-T $temp_file) {
- push(@FILES,$temp_file);
- }
- }
- }
- }
-
- sub search {
-
- @terms = split(/\s+/, $FORM{'terms'});
-
- foreach $FILE (@FILES) {
-
- open(FILE,"$FILE");
- @LINES = <FILE>;
- close(FILE);
-
- $string = join(' ',@LINES);
- $string =~ s/\n//g;
- if ($FORM{'boolean'} eq 'AND') {
- foreach $term (@terms) {
- if ($FORM{'case'} eq 'Insensitive') {
- if (!($string =~ /$term/i)) {
- $include{$FILE} = 'no';
- last;
- }
- else {
- $include{$FILE} = 'yes';
- }
- }
- elsif ($FORM{'case'} eq 'Sensitive') {
- if (!($string =~ /$term/)) {
- $include{$FILE} = 'no';
- last;
- }
- else {
- $include{$FILE} = 'yes';
- }
- }
- }
- }
- elsif ($FORM{'boolean'} eq 'OR') {
- foreach $term (@terms) {
- if ($FORM{'case'} eq 'Insensitive') {
- if ($string =~ /$term/i) {
- $include{$FILE} = 'yes';
- last;
- }
- else {
- $include{$FILE} = 'no';
- }
- }
- elsif ($FORM{'case'} eq 'Sensitive') {
- if ($string =~ /$term/) {
- $include{$FILE} = 'yes';
- last;
- }
- else {
- $include{$FILE} = 'no';
- }
- }
- }
- }
- if ($string =~ /<title>(.*)<\/title>/i) {
- $titles{$FILE} = "$1";
- }
- else {
- $titles{$FILE} = "$FILE";
- }
- }
- }
-
- sub return_html {
- print "Content-type: text/html\n\n";
- print "<html>\n <head>\n <title>Results of Search</title>\n </head>\n";
- print "<body>\n <center>\n <h1>Results of Search in $title</h1>\n </center>\n";
- print "Below are the results of your Search in no particular order:<p><hr size=7 width=75%><p>\n";
- print "<ul>\n";
- foreach $key (keys %include) {
- if ($include{$key} eq 'yes') {
- print "<li><a href=\"$baseurl$key\">$titles{$key}</a>\n";
- }
- }
- print "</ul>\n";
- print "<hr size=7 width=75%>\n";
- print "Search Information:<p>\n";
- print "<ul>\n";
- print "<li><b>Terms:</b> ";
- $i = 0;
- foreach $term (@terms) {
- print "$term";
- $i++;
- if (!($i == @terms)) {
- print ", ";
- }
- }
- print "\n";
- print "<li><b>Boolean Used:</b> $FORM{'boolean'}\n";
- print "<li><b>Case $FORM{'case'}</b>\n";
- print "</ul><br><hr size=7 width=75%><P>\n";
- print "<ul>\n<li><a href=\"$search_url\">Back to Search Page</a>\n";
- print "<li><a href=\"$title_url\">$title</a>\n";
- print "</ul>\n";
- print "<hr size=7 width=75%>\n";
- print "Search Script written by Matt Wright and can be found at <a href=\"http://www.worldwidemart.com/scripts/\">Matt's Script Archive</a>\n";
- print "</body>\n</html>\n";
- }
-
-